/**
 * @param {number[]} nums
 * @return {number}
 */
var findDuplicate = function (nums) {
  //定义快、慢指针：初始化为nums[0]
  let slow = nums[0]
  let fast = nums[0]
  //慢指针走一步，快指针走两步，最终快、慢指针都会停在 环内相遇点（不一定是环的入口，即重复数字）
  do {
    slow = nums[slow]
    fast = nums[nums[fast]]
  } while (slow != fast)
  //定义finder指针：初始化为nums[0]
  let finder = nums[0]
  //慢指针走一步，快指针走一步，finder指针最终也会停留在环的入口，即重复数字
  while (finder != slow) {
    slow = nums[slow]
    finder = nums[finder]
  }
  //返回finder指针
  return finder
};
console.log(findDuplicate([1, 3, 4, 2, 2]))